home *** CD-ROM | disk | FTP | other *** search
- /* sMOVIElines.c - function to smooth scroll horizontal lines up
- through a view.
- M. J. Round. 7 - Oct - 1989. */
-
-
- /* See sMOVIEtext.c for an explanation of how this works. */
-
-
- #include "sMOVIE.h"
-
- extern int maxfontheight,abort_prog;
-
- extern int mousemonitor(void);
-
- extern int maxwidth;
-
- extern int delay; /* delay between each pixel scroll */
-
- extern int ypos; /* y posn of previous text base */
-
- extern struct View v; /* view to be smooth scrolled */
-
- extern struct RastPort rp; /* rastport to write text to */
-
- void smoothlines (number,length,xpos,apen,bpen)
-
- short number; /* number of lines to draw */
- short length; /* length of line (in pixels) */
- short xpos; /* x position to start line (in pixels) */
- BYTE apen; /* foreground (ink colour) pen */
- BYTE bpen; /* background (paper colour) pen */
-
- {
- int j,hipos,jump;
-
- register int i;
-
- WORD *ryoffset;
-
- ryoffset = &(v.ViewPort->RasInfo->RyOffset);
-
- jump = v.ViewPort->DHeight + maxfontheight;
-
- SetDrMd(&rp,JAM1);
-
- for(i=0; i < number; i++) { /* each pass scrolls one pixel */
- if (!abort_prog) abort_prog = mousemonitor();
- else break;
-
- if (ypos >= (rp.BitMap->Rows - 6)) {
- ypos -= jump;
- *ryoffset -= jump;
- }
- hipos = ypos - jump;
- Move (&rp,0,ypos);
- if (xpos) {
- SetAPen(&rp,bpen);
- Draw (&rp,xpos,ypos);
- }
- SetAPen (&rp,apen);
- Draw (&rp,xpos+length,ypos);
- if (xpos+length < maxwidth-1) {
- SetAPen (&rp,bpen);
- Draw (&rp,maxwidth-1,ypos);
- }
-
- if((hipos >= 0) && (*ryoffset >= hipos)) {
- Move (&rp,0,hipos);
- if (xpos) {
- SetAPen(&rp,bpen);
- Draw (&rp,xpos,hipos);
- }
- SetAPen (&rp,apen);
- Draw (&rp,xpos+length,hipos);
- if (xpos+length < maxwidth-1) {
- SetAPen (&rp,bpen);
- Draw (&rp,maxwidth-1,hipos);
- }
- }
-
- ++(*ryoffset);
- MakeVPort(&v, v.ViewPort);
- MrgCop(&v);
-
- for (j=0; j<delay; j++)
- WaitTOF();
-
- LoadView(&v); /* scroll up one pixel */
-
- ypos++;
- } /* repeat (number) times */
-
- } /* end of sMOVIElines */
-